﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sistema_Totem.Datos.SqlServer;
using Sistema_Totem.Logica.Excepciones;

namespace Sistema_Totem.Logica.Clases
{
    public class Involucrado:Persona
    {
        private int id;
        private Rol rol;

        #region Constructores

        public Involucrado()
        {
            this.Rol = new Rol();
        }

        public Involucrado(int id, String nombre, String correo, String telefono, Rol rol)
        {
            this.Id = id;
            this.Nombre = nombre;
            this.Correo = correo;
            this.Telefono = telefono;
            this.Rol = new Rol();
            this.Rol = rol;          
        }
        
        #endregion Constructores

        #region Atributos

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        public Rol Rol
        {
            get { return rol;  }
            set { rol = value; }
        }
        #endregion Atributos

        #region Metodos

        #region Agregar Involucrado
        
        public int AgregarInvolucrado(Involucrado involucrado)
        {
            int idVerificacion = 0;
            // instanciamos un objeto de tipo SqlServerInvolucrado
            SqlServerInvolucrado serverInvolucrado = new SqlServerInvolucrado();
            try{
                // llamamos al metodo AgregarInvolucrado pasando por parametro el objeto del tipo Involucradp
                int idRetornado = serverInvolucrado.AgregarInvolucrado(involucrado);
                // verificamos que el id que retorna la insercion sea distinta de "cero" la insercion fue exitosa
                if (idVerificacion != 0)
                {
                    idVerificacion = idRetornado;
                }
                else
                {   // en el caso contrario si el id que retorna es igual "cero" la insercion fallo
                    if (idVerificacion == 0)
                    {
                        idVerificacion = idRetornado;
                    }
                }
            }
            catch(NullReferenceException error)
            {
                throw (new InvolucradoExcepcion("Esta retornando un valor NULL",error));
            }
            // retornamos la respuesta de la verificacion de la insercion
            return idVerificacion;
        }

        #endregion Agregar Involucrado

        #region ModificarUsuario

        public int ModificarInvolucrado(Involucrado involucrado)
        {
            try
            {
                int idVerificacion = 0;
                // instanciamos un objeto de tipo SqlServerUsuario
                SqlServerInvolucrado serverInvolucrado = new SqlServerInvolucrado();
                // llamamos al metodo ModificarUsuario pasando por parametro el objeto del tipo Usuario
                int idRetornado = serverInvolucrado.ModificarInvolucrado(involucrado);
                // verificamos que el id que retorna la modificacion sea distinta de "cero" la modificacion fue exitosa
                if (idVerificacion != 0)
                {
                    idVerificacion = idRetornado;
                }
                else
                {   // en el caso contrario si el id que retorna es igual "cero" la modificacion fallo
                    if (idVerificacion == 0)
                    {
                        idVerificacion = idRetornado;
                    }
                }
                // retornamos la respuesta de la verificacion de la modificacion
                return idVerificacion;
            }
            catch (NullReferenceException error)
            {
                throw (new InvolucradoExcepcion("Error al pasar los datos 1", error));
            }
        }
        #endregion ModificarUsuario

        #region Consultar un Involucrado en particular
       
        public Involucrado ConsultarInvolucrado(int idInvolucrado)
        {
            Involucrado personaInvolucrado;
            personaInvolucrado = new Involucrado();

            return personaInvolucrado;
        }

        #endregion Consultar un Involucrado en particular

        #region Consultar todos los involucrados
        
        public List<Involucrado> ConsultartodosTodosInvolucrado()
        {
            SqlServerInvolucrado serverInvolucrado = new SqlServerInvolucrado();
            try
            {
                return serverInvolucrado.ConsultarInvolucrados();
            }
            catch (NullReferenceException error)
            {
                throw (new InvolucradoExcepcion ("El valor que devuelve la lista es vacio", error));
            }      
        }

        #endregion Consultar todos los involucrados

        #endregion Metodos
    }
}